package org.example.teachermall04.service;

import org.example.teachermall04.entity.Goods;
import org.example.teachermall04.mapper.GoodsMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class GoodsService {
    //调用mapper方法，拿到所有的商品数据
    @Autowired
    private GoodsMapper goodsMapper;
    @Autowired
    private RedisService redisService;

    //返回所有的商品数据
    public List<Goods> selectAll() {
        return goodsMapper.selectAll();
    }
    //返回所有的最新商品数据
    public List<Goods> selectAllNew() {
        return goodsMapper.selectAllNew();
    }
    public List<Goods> findByPage(int page, int pageSize) {
        //先查看是否有对应的缓存数据，如果有，则直接使用。如果没有，则数据库返回数据后加入到缓存中
        List<Goods> list = redisService.getCacheGoodsPage(page);
        if(list == null){
            System.out.println("构建第"+page+"页商品数据缓存");
            //没有缓存
            int offset = (page - 1) * pageSize;//计算数据的偏移量
            list = goodsMapper.selectByPage(offset, pageSize);
            //加入到缓存中
            redisService.cacheGoodsPage(page,list);
        }else{
            System.out.println("使用第"+page+"页商品数据缓存");
        }
        return list;
    }
    public Goods findById(int id) {
        return  goodsMapper.findById(id);
    }
    public long count() {
        return goodsMapper.count();
    }
}
